\vspace{-5pt}
\section{Introduction}
\vspace{-5pt}
Most existing general purpose microprocessors use short SIMD instructions.
However, access to these instructions is limited to in-line assembly and library
calls. The vector compilers provide the most promising means of exploiting
multimedia instructions, but they are incapable of locating SIMD style
parallelism within a basic block. 

Larsen and Amarsinghe introduced the concept of Superword Level Parallelism
(SLP)\cite{SLP}, a novel way of viewing parallelism in multimedia and scientific
applications. They developed a simple and robust compiler technique for
detecting SLP that targets basic blocks rather than the conventional loop nests.
In this project we aim to reference the SLP algorithm to implement a
vectorization optimization pass in LLVM to explore SIMD-style parallelism within
a basic block. And we will compare it against LLVM built-in Autovectorization
pass (-bb-vectorize)\cite{bb-vectorize}.



